package com.xx.eshop.controller;

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;

import com.xx.eshop.util.UploadUtils;

@Controller
public class UploadController {

	// <input name="username"
	@RequestMapping("/upload")
	@ResponseBody
	public Map<String,Object> upload(MultipartFile Filedata, String id) throws IllegalStateException, IOException {
//		Filedata.getSize() // 查看上传文件的大小
//		Filedata.getInputStream() // 获取上传文件对应的输入流
//		Filedata.getOriginalFilename() // 获取上传文件的原始文件名
//		Filedata.transferTo(new File("存储的路径和文件名"));
//		Filedata.transferTo(new File("e:\\1.jpg"));
		
		// 保证文件名的唯一
		String filename = UploadUtils.saveWithMD5Name(Filedata.getInputStream(), "e:\\upload\\", ".jpg");
//		System.out.println(filename);
		// 返回json数据给前台的上传组件
		Map<String, Object> map = new HashMap<>();
		map.put("status", true); // 表示上传成功
		map.put("message", "上传成功");
		map.put("filename", filename);
		map.put("value", filename);
		map.put("id", id);
		return map;
	}
}
/*
 *  1. 加入上传文件的jar包 commons-fileupload (commons-fileuplaod.jar commons-io.jar)
 *  2. springmvc 的配置文件中启用文件上传的支持
 *       MultipartResolver -> 接口
 *          可以选择其中 CommonsMultipartResolver 实现来配合commons-fileupload 来配合完成上传功能
 *       bean 的id必须是 multipartResolver
 *  3. 上传文件的参数类型使用： MultipartFile类型, 默认的参数名固定为Filedata
 */
